#ifndef OPTO_INPUT_DRIVER_H
#define OPTO_INPUT_DRIVER_H


#include "sys_pub.h" // 换成实际 MCU 的头文件，比如 STM32 就改对应头文件 

// 光耦输入通道配置结构体
typedef struct {
    GPIO_TypeDef* port;       // GPIO 端口，如 GPIOP（需根据实际 MCU 确认）
    GPIO_Pin_TypeDef pin;     // 引脚，如 GPIO_PIN_7
    const char* description;  // 引脚描述，对应原理图里的 “P07_S” 等 
} opto_in_config_t;

// 光耦输入通道枚举
typedef enum {
    OPTO_IN_CH_0,  // 对应 RN1 第一个引脚
    OPTO_IN_CH_1,  
    OPTO_IN_CH_2,  
    OPTO_IN_CH_3,  
    OPTO_IN_CH_4,  // 对应 RN2 第一个引脚
    OPTO_IN_CH_5,  
    OPTO_IN_CH_6,  
    OPTO_IN_CH_7,  
    OPTO_IN_CH_8,  // 对应 RN3 第一个引脚
    OPTO_IN_CH_9,  
    OPTO_IN_CH_10, 
    OPTO_IN_CH_11, 
    OPTO_IN_CH_12, // 对应 RN4 第一个引脚
    OPTO_IN_CH_13, 
    OPTO_IN_CH_14, 
    OPTO_IN_CH_15, 
    OPTO_IN_CH_MAX // 总通道数，这里 RN1~RN4 共 16 个输入引脚（4 个排阻，每个 4 脚）
} opto_in_channel_t;

// 初始化光耦输入驱动
void opto_input_init(void);

// 读取指定通道光耦输入状态
// 返回 0/1 表示电平，0xFF 表示通道无效 
uint8_t opto_input_read_channel(int channel);

// 获取指定通道描述信息
const char* opto_input_get_desc(opto_in_channel_t channel);

#endif